<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
    $Id: package.html 481833 2006-12-03 17:32:52Z niallp $

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
   
         http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<html>
<head>
    <title>Package Documentation for org.apache.struts.taglib.html
        Package</title>
    <base>
</head>

<body bgcolor="white">

<p><a name="doc.Description">The "struts-html" tag library</a>
    contains JSP custom tags useful in creating dynamic HTML user interfaces,
    including input forms.</p>

<div align="Center">
    <p><a href="#doc.Intro">[Introduction]</a>
        <a href="#doc.Form">[HTML Form Tags]</a>
        <a href="#doc.Other">[Other HTML Tags]</a>
    </p>
</div>

<hr>

<h3><a name="doc.Intro">Introduction</a>
</h3>

<p>The tags in the Struts HTML library form a bridge between a JSP view and
    the other components of a Web application. Since a dynamic Web application
    often depends on gathering data from a user, input forms play an important
    role in the Struts framework. Consequently, the majority of the HTML tags
    involve <a href="#doc.Form">HTML</a>
    forms. Other important issues addressed by the Struts-HTML tags are <a
        href="#doc.Other.messages">
    messages</a>
    , <a href="#doc.Other.errors">error messages</a>
    , <a href="#doc.Other.hyperlinking">hyperlinking</a>
    and <a href="#doc.Other.i18n">internationalization</a>
    .<br>
</p>

<div align="Center"><img src="doc-files/htmlUML.gif"
                         alt="Tags that wrap the html tags">
    <br>
</div>


<hr>

<h3><a name="doc.Form">HTML "form" tags</a>
</h3>

<ul>
    <li>
        <a href="../../../../../../tagreference.html#button">button</a>
    </li>
    <li>
        <a href="../../../../../../tagreference.html#cancel">cancel</a>
    </li>
    <li><a href="../../../../../../tagreference.html#checkbox">checkboxes</a>
    </li>
    <li><a href="../../../../../../tagreference.html#file">file</a>
    </li>
    <li>
        <a href="../../../../../../tagreference.html#hidden">hidden</a>
    </li>
    <li><a href="../../../../../../tagreference.html#image">image</a>
    </li>
    <li><a href="../../../../../../tagreference.html#multibox">multibox</a>
    </li>
    <li><a href="../../../../../../tagreference.html#password">password</a>
        input fields</li>
    <li><a href="../../../../../../tagreference.html#radio">radio</a>
        buttons</li>
    <li><a href="../../../../../../tagreference.html#reset">reset</a>
        buttons</li>
    <li>
        <a href="../../../../../../tagreference.html#select">select</a>
        lists with embedded</li>
    <li>
        <a href="../../../../../../tagreference.html#option">option</a>
    </li>
    <li>
        <a href="../../../../../../tagreference.html#options">options</a>
    </li>
    <li>
        <a href="../../../../../../tagreference.html#submit">submit</a>
        buttons</li>
    <li><a href="../../../../../../tagreference.html#text">text</a>
        input fields</li>
    <li><a href="../../../../../../tagreference.html#textarea">textareas</a>
    </li>

</ul>

<p>Each of these tags must be nested within a &lt;html:form&gt; tag.</p>

<h4><a name="doc.Form.formTag">About the form tag</a>
</h4>

<p>The Struts <code>form</code> tag outputs a standard HTML form tag, and
    also links the input form with a JavaBean subclassed from the Struts
    <a href="../../action/ActionForm.html">ActionForm</a>object.
    Each field in the form should correspond to a property of the form's
    bean. When a field and property correspond, the bean is first used to
    populate
    the form, and then to store the user's input when the form is submitted
    to the controller servlet.</p>

<p>The name of the bean and its class can be specified as a property to the
    form tag, but may also be omitted. If omitted, the <code>
    ActionMappings</code>
    database (loaded from the <code>struts-config.xml</code> file) is
    consulted.
    If the current page is specified as the <code>input</code> property for an
    <code>action</code>, the name of the <code>action</code> is used. The
    <code>
        type</code> property for the bean is also then taken from the
    configuration,
    via a Form Bean definition.</p>

<p>Here's a clip from the Struts Example configuration:</p>

<pre>&lt;action-mappings&gt;<br> &lt;!-- Process a user logon --&gt;<br> &lt;action
    path="/logon"<br> type="org.apache.struts.webapp.example.LogonAction"<br>
    name="logonForm"<br> scope="request"<br> input="/logon.jsp"&gt;<br> &lt;/action&gt;
    <br> &lt; ... /&gt;<br>&lt;/action-mappings&gt;<br>&lt;form-beans&gt;<br>
    &lt;!-- Logon form bean --&gt;<br> &lt;form-bean name="logonForm"<br>
    type="org.apache.struts.webapp.example.LogonForm"/&gt;<br> &lt; ... /&gt;
    <br> &lt;/form-beans&gt;<br>&lt;/pre&gt;<br></pre>

<p>Given this configuration, the HTML form tag for <code>logon.jsp</code>
    will default to using "<code>logonForm</code>" as its name property and
    "<code> org.apache.struts.webapp.example.LogonForm</code>" as the
    attribute's type.
    This way you can manage the namespace for your framework components from
    the configuration file.</p>

<p>If the form tag does not find the form bean in any of the scopes (page,
    request, session, application), it creates one using the specified
    type.</p>

<p>The Struts <code>ActionForm</code> class is equipped with standard <code>
    reset()</code> and <code>validate()</code> methods, that can be used by
    the controller to enable automatic data validation. See the <a
        href="../../../../../../userGuide/building_view.html#form_validation">
    Users Guide</a>
    for more about Form Validation. An important aspect of validation is
    reporting errors to the user. This can be handled by the Struts <code>
    errors</code>
    tag, which is discussed <a href="#doc.Other.errors">later in this
    document</a>
    .</p>

<hr>
<h4><a name="doc.Form.attributes">Common Form Tag Attributes</a>
</h4>

<p>The form "field" tags in the Struts-HTML tag library share a common set
    of tag attributes that have the same meaning, no matter what field tag
    they
    are used with. These properties also accept Runtime Expressions, meaning
    you can set them with a scriptlet. The common attributes fall into four
    categories: <a href="#doc.Form.attributes.struts">Struts Common,</a>
    <a href="#doc.Form.attributes.navigation">HTML Navigation</a>
    , <a href="#doc.Form.attributes.javascript">Javascript</a>
    , and <a href="#doc.Form.attributes.css">CSS</a>
    .</p>

<h5><a name="doc.Form.attributes.struts">Struts Common</a>
</h5>

<div align="Center">
    <center>
        <table width="90%" border="1" cellpadding="4">
            <tbody>
                <tr>
                    <td> name </td>
                    <td> The attribute name of the <code>ActionForm</code>
                        bean whose
                        properties are consulted when rendering the current
                        value of this
                        input field. If not specified, the bean associated
                        with the form
                        tag we are nested within is utilized. </td>
                </tr>
                <tr>
                    <td> property </td>
                    <td> Name of the request parameter that will be included
                        with this
                        submission, set to the specified value. </td>
                </tr>
                <tr>
                    <td> value </td>
                    <td> Value of the label to be used with this element. This
                        value
                        will also be submitted as the value of the specified
                        request parameter.
                        [Body of this tag (if any), or "Click"]&nbsp; </td>
                </tr>

            </tbody>
        </table>
    </center>
</div>

<p>&nbsp;</p>

<p>Like <a href="../bean/package-summary.html#doc.Properties">Struts-Bean</a>
    tags, the property attribute for the Struts-HTML tags accept simple,
    nested, and indexed expressions. For example, this tag:</p>

<pre>  &lt;html:text property="mailingAddress.street"/&gt;<br></pre>

<p>corresponds to:</p>

<pre> getMailingAddress().getStreet()<br></pre>

<p>For more about using simple, nested, and indexed expressions with Struts,
    see the <a href="../bean/package-summary.html#doc.Properties">Struts-Bean
    Developers Guide.</a>
</p>

<h5><a name="doc.Form.attributes.javascript">Javascript Event Handlers</a>
</h5>

<div align="Center">
    <center>
        <table width="90%" border="1" cellpadding="4">
            <tbody>
                <tr>
                    <td> onblur </td>
                    <td> Executed when this element loses input focus. </td>
                </tr>
                <tr>
                    <td> onchange </td>
                    <td> Executed when this element loses input focus and its
                        value
                        has changed. </td>
                </tr>
                <tr>
                    <td> onclick </td>
                    <td> Executed when this element receives a mouse
                        click. </td>
                </tr>
                <tr>
                    <td> ondblclick </td>
                    <td> Executed when this element receives a mouse - double
                        click.
                    </td>
                </tr>
                <tr>
                    <td> onfocus </td>
                    <td> Executed when this element receives input
                        focus. </td>
                </tr>
                <tr>
                    <td> onkeydown </td>
                    <td> Executed when this element has focus and a key is
                        depressed.&nbsp;
                    </td>
                </tr>
                <tr>
                    <td> onkeypress </td>
                    <td> Executed when this element has focus and a key is
                        depressed
                        and released </td>
                </tr>
                <tr>
                    <td> onkeyup </td>
                    <td> Executed when this element has focus and a key is
                        released
                    </td>
                </tr>
                <tr>
                    <td> onmousedown </td>
                    <td> Executed when this element is under the mouse pointer
                        and
                        a mouse button is depressed. </td>
                </tr>
                <tr>
                    <td> onmousemove </td>
                    <td> Executed when this element is under the mouse pointer
                        and
                        the pointer is moved. </td>
                </tr>
                <tr>
                    <td> onmouseout </td>
                    <td> Executed when this element was under the mouse
                        pointer but
                        the pointer was moved outside the element. </td>
                </tr>
                <tr>
                    <td> onmouseover </td>
                    <td> Executed when this element was not under the mouse
                        pointer
                        but the pointer is moved inside the element. </td>
                </tr>
                <tr>
                    <td> onmouseup </td>
                    <td> Executed when this element is under the mouse pointer
                        and
                        a mouse button is released.&nbsp; </td>
                </tr>
                <tr>
                    <td>&nbsp; </td>
                    <td><b>"parent" form tag only</b></td>
                </tr>
                <tr>
                    <td> onreset </td>
                    <td> Executed if the form is reset. </td>
                </tr>
                <tr>
                    <td> onsubmit </td>
                    <td> Executed if the form is submitted.&nbsp; </td>
                </tr>

            </tbody>
        </table>
    </center>
</div>

<h5>&nbsp;</h5>

<h5><a name="doc.Form.attributes.navigation">HTML Navigation Attributes</a>
</h5>

<div align="Center">
    <center>
        <table width="90%" border="1" cellpadding="4">
            <tbody>
                <tr>
                    <td> accesskey </td>
                    <td> The keyboard character used to move focus immediately
                        to this
                        element. </td>
                </tr>
                <tr>
                    <td> tabindex </td>
                    <td> The tab order (ascending positive integers) for this
                        element.
                    </td>
                </tr>

            </tbody>
        </table>
    </center>
</div>

<h5>&nbsp;</h5>

<h5><a name="doc.Form.attributes.css">CSS Attributes</a>
</h5>

<div align="Center">
    <center>
        <table width="90%" border="1" cellpadding="4">
            <tbody>
                <tr>
                    <td> style </td>
                    <td> CSS styles to be applied to this HTML element. </td>
                </tr>
                <tr>
                    <td> styleClass </td>
                    <td> CSS stylesheet class to be applied to this HTML
                        element. </td>
                </tr>

            </tbody>
        </table>
    </center>
</div>

<p>&nbsp;</p>

<p>See the <a href="../../../../../../tagreference.html">HTML Tags
    Reference</a>
    for detailed information about the available tags in this tag library,
    and the complete list of valid attributes for each tag.</p>

<hr>

<h3><a name="doc.Other">Other HTML tags</a>
</h3>

<p>Aside from form processing, the Struts-HTML offers several other tags or
    tag properties to help with displaying error messages, messages,
    maintaining
    hyperlinks, and with internationalizing your application.</p>

<h4><a name="doc.Other.messages">Displaying Messages</a>
</h4>

<p>Message handling is an important part of any application. These messages
    can be informative messages and/or error messages for the user. Struts
    provides a generalized method for communicating runtime messages to users,
    based on the same technology used to provide internationalization.
    Messages
    and error messages can both be used by the messages tag.</p>

<p>The messages tag [since version 1.1] has basically the same functionality
    as the errors tag, but it iterates through the messages so any formatting
    of messages can be done in the JSP page. Also the header and footer for
    the message tag are optional. </p>

<p>By default, the messages tag will iterate through all pending messages.
    You can also specify a property when queuing a message, and then refer to
    that property in the messages tag. In that case, only the message(s) for
    that property will be displayed. This is helpful when you would like to
    place the message for a field next to the actual field.</p>

<p>Messages are often queued in the Action. The variable info is the
    ActionForm
    corresponding to this Action. :</p>

<pre><br> ActionMessages messages = new ActionMessages();<br>
    messages.add(ActionMessages.GLOBAL_MESSAGE, new
    ActionMessage("userForm.insert", info.getUserName());<br>
    messages.add("activationDate", new ActionMessage("userForm.active",
    info.getSubscriptionLength());<br></pre>

<p>This queues two messages, one is a global message and another for the
    "activationDate" field. To print all the messages together, simply place
    the
    messages tag anywhere in your JSP.</p>

<pre>  &lt;body bgcolor="white"&gt;<br> &lt;ul&gt;<br> &lt;html:messages
    id="message"&gt;<br> &lt;li&gt;&lt;bean:write name="message"/&gt;&lt;/li&gt;
    <br> &lt;/html:messages&gt;<br> &lt;/ul&gt;<br></pre>

<p>Or, you can place specific messages at different locations</p>

<pre>  &lt;ul&gt;<br> &lt;html:messages id="message" property="&lt;%=
    org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %&gt;"&gt;<br> &lt;li&gt;&lt;bean:write
    name="message"/&gt;&lt;/li&gt;<br> &lt;/html:messages&gt;<br> &lt;/ul&gt;
    <br> &lt;table&gt;<br> &lt;tr&gt;<br> &lt;td align="left"&gt;<br> &lt;html:text
    property="username" size="16" maxlength="16"/&gt;<br> &lt;/td&gt;<br> &lt;/tr&gt;
    <br> &lt;tr&gt;<br> &lt;td align="left"&gt;<br> &lt;html:text
    property="activationDate" size="10" maxlength="10"/&gt;<br> &lt;br&gt;<br>
    &lt;html:messages id="message" property="activationDate"&gt;<br> &lt;bean:write
    name="message"/&gt;&lt;br&gt;<br> &lt;/html:messages&gt;<br> &lt;/td&gt;
    <br> &lt;/tr&gt;<br> &lt;/table&gt;<br></pre>

<p>By default, the actual message is retrieved from the application's standard
    message resource. This gives you a master list of the messages used by
    your application, and provides for internationalization. In the code
    snippet,
    the message corresponding to "userForm.insert" would be retrieved and
    displayed to the user at runtime. </p>

<pre> userForm.insert={0} has successfully been inserted.<br>
    userForm.active=The account will be active for {0} months.<br></pre>

<p>A header and footer are optional. The header will be rendered before
    iteration
    begins and the footer will be rendered after iteration is over. If a
    value is not assigned to the attribute, then nothing will be rendered
    for that attribute.</p>

<pre>  &lt;html:messages id="message" header="errors.header"
    footer="errors.footer"&gt;<br> &lt;li&gt;&lt;bean:write name="message"/&gt;&lt;/li&gt;
    <br> &lt;/html:messages&gt;<br><br> errors.header=&lt;h3&gt;&lt;font
    color="red"&gt;Validation Error&lt;/font&gt;&lt;/h3&gt;<br> You must
    correct the following error(s) before proceeding:&lt;UL&gt;<br>
    errors.footer=&lt;/ul&gt;&lt;hr&gt;<br></pre>

<h4><a name="doc.Other.errors">Displaying Error Messages</a>
</h4>

<p>Error handling is an important part of any application, and curing an error
    often involves getting the user's help. Struts provides a generalized
    method
    for communicating runtime messages to users, based on the same technology
    used to provide internationalization. </p>

<p>In a Web application, it is common to reuse the input page to display error
    messages. The Struts error message tag can be placed wherever you would
    like the messages to display. If no messages are pending, nothing is
    printed.</p>

<p>By default, the errors tag will print all pending messages. You can also
    specify a property when queuing a message, and then refer to that property
    in the errors tag. In that case, only the message for that property will
    be displayed. This is helpful when you would like to place the message for
    a field next to the actual field.</p>

<p>Error messages are often queued in the ActionForm validate method. Here's
    a snippet from the Struts Example application:</p>

<pre> ActionErrors errors = new ActionErrors();<br> if ((username == null) ||
    (username.length() &lt; 1))<br> errors.add("username", new
    ActionMessage("error.username.required"));<br> if ((password == null) ||
    (password.length() &lt; 1))<br> errors.add("password",<br> new
    ActionMessage("error.password.required"));<br></pre>

<p>This queues two error messages, one for the "username" field and another
    for the "password" field. To print all the messages together, simply place
    the error tag anywhere in your JSP.</p>

<pre>  &lt;body bgcolor="white"&gt;<br> &lt;html:errors/&gt;<br></pre>

<p>Or, you can place specific error messages at different locations</p>

<pre>  &lt;td align="left"&gt;<br> &lt;html:text property="username" size="16"
    maxlength="16"/&gt;<br> &lt;html:errors property="username"/&gt;<br> &lt;/td&gt;
    <br> &lt;/tr&gt;&lt;tr&gt;<br> &lt;td align="left"&gt;<br> &lt;html:text
    property="password" size="16" maxlength="16"/&gt;<br> &lt;html:errors
    property="password"/&gt;<br> &lt;/td&gt;<br></pre>

<p>By default, the actual error message is retrieved from the application's
    standard message resource. This gives you a master list of the error
    messages
    used by your application, and provides for internationalization. In the
    code snippet, the message corresponding to "error.username.required" would
    be retrieved and displayed to the user at runtime. </p>

<pre> error.username.required=&lt;li&gt;Username is required&lt;/li&gt;<br>
</pre>

<p>Most often, error messages are displayed in a particular way. To make it
    easy to format your messages, you can also specific an <code>
    errors.header</code>
    and <code>errors.footer</code> string in your message resource. Typically,
    you might want to render the messages in a different color, or set them
    up to appear in an unordered list. Using the <code>errors.header</code>
    and <code>errors.footer</code> strings keeps the setup codes out of your
    JSP until a message actually prints.</p>

<pre> errors.header=&lt;h3&gt;&lt;font color="red"&gt;Validation Error&lt;/font&gt;&lt;/h3&gt;
    <br> You must correct the following error(s) before proceeding:&lt;UL&gt;
    <br> errors.footer=&lt;/ul&gt;&lt;hr&gt;<br></pre>

<h4><a name="doc.Other.hyperlinking">Maintaining Hyperlinks</a>
</h4>

<ul>
    <li><a href="../../../../../../tagreference.html#base">base</a>
    </li>

</ul>

<p>When implementing a Web application, it is usually a good idea to use
    relative
    references to other files in the same application. But in a dynamic
    application,
    the controller servlet often returns a completely different file than the
    one requested. (Often, the requested "file" doesn't actually exist, but
    represents an action for the controller to interpret.) Since relative
    references
    are resolved by the browser, they often won't work in a dynamic
    application.</p>

<p>To accommodate this, the Struts-HTML taglib provides a <code>
    &lt;base&gt;</code>
    tag that renders an HTML element with an href attribute pointing
    to the absolute location of its page. </p>

<p>As a rule, you should place the Struts-HTML base tag in the &lt;head&gt;
    section of any JSP that uses relative references to other files.</p>

<pre>  &lt;head&gt;<br> &lt;html:base/&gt;<br> &lt;/head&gt;<br></pre>

<h4><a name="doc.Other.sessions">Session Tracking</a>
</h4>

<p>The Java Servlet framework has built-in support for tracking a client
    through
    a session. Sessions are a useful way to compensate for the stateless
    nature
    of HTTP. Tracking a client can be done with either cookies or URL
    rewriting,
    cookies being preferred when available. Struts offers three tags that make
    it easy to write "session-aware" hyperlink references:</p>

<ul>
    <li><a href="../../../../../../tagreference.html#link">link</a>
        - Renders an HTML anchor or hyperlink.</li>
    <li>
        <a href="../../../../../../tagreference.html#rewrite">rewrite</a>
        - Renders a request URI, but without creating the &lt;a&gt; hyperlink.
        This tag is useful when you want to generate a string constant for use
        by a JavaScript procedure.</li>
    <li><a href="../../../../../../tagreference.html#img">img</a>
        - Renders an HTML &lt;img&gt; element with the image at the specified
        URL.</li>

</ul>

<p>Each of these tags will automatically apply URL rewriting, to maintain
    session state in the absence of cookies. The content displayed for the
    hyperlink
    will be taken from the body of the tag. The base URL for the hyperlink
    is calculated based on properties given with the tag.</p>

<p>Normally, the hyperlink or URI you specify is left unchanged. If you would
    like to include dynamic parameters to the hyperlink or URI, you can pass
    those to the tags via a JavaBean. If there may be naming conflicts, you
    can also specify the scope that the tag searches (request, page, session,
    application). </p>

<p>To pass a single dynamic parameter, specify the parameter's name using
    the <code>paramId</code> attribute. You can then specify the name of the
    JavaBean holding the value using the <code>paramName</code> attribute, and
    a particular property using <code>paramProperty</code>. </p>

<p>So, a tag like</p>

<pre>   &lt;html:link paramId="target"<br> paramName="linkParams" <br>
    paramProperty="target"<br> paramScope="request"<br> &gt;detail.html&lt;/html:link&gt;
</pre>

<p>would correspond to something like</p>

<pre>  &lt;A HREF="detail.html?&lt;%= <br>
    request.getAttribute("linkParams").getTarget()<br> %&gt;"&gt;&lt;/A&gt;
    <br></pre>

<p>To search all scopes (request, page, session, and application), omit <code>
    paramScope</code>. </p>

<p>The <code>paramProperty</code> attribute may also be omitted, so long as
    the named bean identifies a value that can be converted to a String. </p>

<p>To pass multiple dynamic parameters, you can store them in a <code><a
        href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html">
    java.util.Map</a>
</code>, and use the name of the map for the <code>paramName</code>. The
    map must then contain one or more <code>paramIds</code> and their
    corresponding
    values. As the Map is processed, the keys are assumed to be the names of
    query parameters to be appended. The value associated with each key must
    be either a String or a String array representing the parameter value(s).
    If a String array is specified, more than one value for the same query
    parameter
    name will be created. </p>

<p>The HTML session tracking tags use several common attributes, that can
    be organized into three groups, as follows. All of these attributes are
    not used by all three tags (<code>link</code>, <code>rewrite</code>, and
    <code>img</code>), and so the tags using each attribute is given. </p>

<p>&nbsp;
    <table width="90%" border="1" cellpadding="4">
        <tbody>
            <tr>
                <th colspan="2">forward, href, and page</th>
            </tr>
            <tr>
                <td> forward </td>
                <td> [ link rewrite ] - Logical name of a global ActionForward
                    that
                    contains the actual content-relative URI of the
                    destination of this
                    transfer. This hyperlink may be dynamically modified by
                    the inclusion
                    of query parameters, as described in the tag description.
                    You must specify
                    exactly one of the forward attribute, the href attribute,
                    the linkName
                    attribute, or the page attribute </td>
            </tr>
            <tr>
                <td> href </td>
                <td> [ link rewrite ] - The URL to which this hyperlink will
                    transfer
                    control if activated. This hyperlink may be dynamically
                    modified by
                    the inclusion of query parameters, as described in the tag
                    description.
                    You must specify exactly one of the forward attribute, the
                    href attribute,
                    the linkName attribute, or the page attribute. </td>
            </tr>
            <tr>
                <td> page </td>
                <td> [ link rewrite ] - The context-relative path, starting
                    with a
                    slash, of the image to be displayed by this tag. The
                    rendered URL
                    for this image will automatically prepend the context path
                    of this
                    web application (in the same manner as the page attribute
                    on the link
                    tag works), in addition to any necessary URL rewriting.
                    You must specify
                    either the page attribute or the src attribute. </td>
            </tr>

        </tbody>
    </table>
</p>

<p>&nbsp;
    <table width="90%" border="1" cellpadding="4">
        <tbody>
            <tr>
                <th colspan="2">linkName, Target , and src</th>
            </tr>
            <tr>
                <td> linkName </td>
                <td>
                    <p>[ link ] - The anchor name to be defined within this
                        page, so that
                        you can reference it with intra-page hyperlinks. In
                        other words, the
                        value specified here will render a "name" element in
                        the generated
                        anchor tag. </p>
                </td>
            </tr>
            <tr>
                <td> target </td>
                <td> [ link img ] - The window target in which the resource
                    requested
                    by this hyperlink will be displayed, for example in a
                    framed presentation.
                </td>
            </tr>
            <tr>
                <td> src </td>
                <td> [ img ] - The URL to which this image will be transferred
                    from
                    This image may be dynamically modified by the inclusion of
                    query parameters,
                    as described in the tag description. This value will be
                    used unmodified
                    (other than potential URL rewriting) as the value of the
                    "src" attribute
                    in the rendered tag. You must specify either the page
                    attribute or the
                    the src attribute. </td>
            </tr>

        </tbody>
    </table>
</p>

<p>&nbsp;
    <table width="90%" border="1" cellpadding="4">
        <tbody>
            <tr>
                <th colspan="2">paramId, paramName, paramProperty,
                    paramScope </th>
            </tr>
            <tr>
                <td> paramId </td>
                <td> [ link img ] - The name of the request parameter that
                    will be
                    dynamically added to the generated src URL. The
                    corresponding value
                    is defined by the paramName and (optional) paramProperty
                    attributes,
                    optionally scoped by the paramScope attribute</td>
            </tr>
            <tr>
                <td> paramName </td>
                <td> [ link img ] - The name of a JSP bean that is a String
                    containing
                    the value for the request parameter named by paramId (if
                    paramProperty
                    is not specified), or a JSP bean whose property getter is
                    called to
                    return a String (if paramProperty is specified). The JSP
                    bean is constrained
                    to the bean scope specified by the paramScope property, if
                    it is specified.
                </td>
            </tr>
            <tr>
                <td> paramProperty </td>
                <td> [ link img ] - The name of a property of the bean
                    specified by
                    the paramName attribute, whose return value must be a
                    String containing
                    the value of the request parameter (named by the paramId
                    attribute)
                    that will be dynamically added to this hyperlink or src
                    URL</td>
            </tr>
            <tr>
                <td> paramScope </td>
                <td> [ link img ] - The scope within which to search for the
                    bean specified
                    by the paramName attribute. If not specified, all scopes
                    are searched.
                </td>
            </tr>

        </tbody>
    </table>
</p>

<p>&nbsp;
    <table width="90%" border="1" cellpadding="4">
        <tbody>
            <tr>
                <th colspan="2">
                    <p>name, property, scope </p>
                </th>
            </tr>
            <tr>
                <td> name </td>
                <td> [ link rewrite img ] - The name of a JSP bean that
                    contains a
                    <code><a
                            href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html">
                        Map</a>
                    </code> representing the query parameters (if <code>
                    property</code>
                    is not specified), or a JSP bean whose property getter is
                    called
                    to return a <code>Map</code> (if <code>property</code> is
                    specified).
                </td>
            </tr>
            <tr>
                <td> property </td>
                <td>[ link rewrite img ] - The name of a property of the bean
                    specified
                    by the name attribute, whose return value must be a <code>
                    <a href="http://java.sun.com/j2se/1.3/docs/api/java/util/Map.html">
                        Map</a>
                </code> containing the query parameters to be added to the src
                    URL. You <b>must</b> specify the name attribute if you
                    specify this
                    attribute </td>
            </tr>
            <tr>
                <td> scope </td>
                <td> [ link rewrite img ] - The scope within which to search
                    for the
                    bean specified by the name attribute. If not specified,
                    all scopes are
                    searched. </td>
            </tr>

        </tbody>
    </table>
</p>

<p>See the <a href="../../../../../../tagreference.html">HTML Tags
    Reference</a>
    for the complete list of valid attributes for each tag.. </p>

<h4><a name="doc.Other.i18n">Internationalization</a>
</h4>

<p>Internationalization is automatically supported by the HTML tags where
    appropriate. </p>

<p><a href="../../../../../../tagreference.html#errors">Errors</a>
    - By default, the text for your messages will be returned by the default
    message resource, which will select the appropriate language for the user.
    You may also specify another message resource using the <code>
    bundle</code>
    attribute.</p>

<p><a href="../../../../../../tagreference.html#html">HTML</a>
    - Renders an HTML element with language attributes extracted from the
    user's current Locale object, if there is one. </p>

<p><a href="../../../../../../tagreference.html#image">image</a>
    and <a href="../../../../../../tagreference.html#img">img</a>
    - Can optionally retrieve the value for its binary source and alt text
    from the message resource, so that different images and/or text can be
    provided
    for different locales. See the tag's <code>altKey</code>, <code>
    srcKey</code>
    , and <code>bundle</code> attributes in the <a
        href="../../../../../../tagreference.html">
    HTML Tags Reference</a>
    .</p>

<p>
    <a href="../../../../../../tagreference.html#messages">Messages</a>
    - By default, the text for your messages will be returned by the default
    message resource, which will select the appropriate language for the user.
    You may also specify another message resource using the <code>
    bundle</code>
    attribute.</p>

<p>See the <a href="../../../../../../userGuide/building_view.html#i18n">
    Users Guide</a>
    for more on how Struts helps you internationalize your applications.</p>

<p>&nbsp;</p>

</body>
</html>
